package cn.terminus.web.customer.contractinfo.form;

import cn.terminus.client.customer.contractfile.param.ContractFileNewParam;
import cn.terminus.client.customer.contractrentclause.param.ContractRentClauseNewParam;
import cn.terminus.client.customer.contractrentdiscountclause.param.ContractRentDiscountClauseNewParam;
import cn.terminus.client.customer.contractrentincrementalclause.param.ContractRentIncrementalClauseNewParam;
import cn.terminus.client.customer.custominfo.param.AddCustomInfoParam;
import cn.terminus.client.customer.custompurposeroom.param.CustomPurposeRoomNewParam;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * @author leslie.zhang
 * @date 2021/7/21 11:42 上午
 */
@ApiModel(description = "租赁合同信息表")
@Data
@Accessors(chain = true)
@ToString(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class RentContractNewForm {
    private static final long serialVersionUID = 280780791068820171L;

    /**
     * 合同编号
     */
    @ApiModelProperty(name = "code", value = "合同编号", required = false)
    private String code;

    /**
     * 合同签订日期
     */
    @ApiModelProperty(name = "signTime", value = "合同签订日期", required = false)
    private LocalDate signTime;

    /**
     * 合同开始时间
     */
    @ApiModelProperty(name = "effectiveBeginTime", value = "合同开始时间", required = true)
    private LocalDate effectiveBeginTime;

    /**
     * 合同结束时间
     */
    @ApiModelProperty(name = "effectiveEndTime", value = "合同结束时间", required = true)
    private LocalDate effectiveEndTime;

    /**
     * 计算精度code
     */
    @ApiModelProperty(name = "precisionCode", value = "计算精度code", required = true)
    private String precisionCode;

    /**
     * 合同标签code,号分割
     */
    @ApiModelProperty(name = "labelCode", value = "合同标签code,号分割", required = true)
    private String labelCode;

    /**
     * 租客id
     */
    @ApiModelProperty(name = "customerId", value = "租客id", required = true)
    private Long customerId;

    /**
     * 合同签单人姓名
     */
    @ApiModelProperty(name = "contractSigner", value = "合同签单人姓名", required = true)
    private String contractSigner;

    /**
     * 合同签单人电话
     */
    @ApiModelProperty(name = "contractSignerPhone", value = "合同签单人电话", required = true)
    private String contractSignerPhone;

    /**
     * 押金
     */
    @ApiModelProperty(name = "deposit", value = "押金", required = true)
    private BigDecimal deposit;

    /**
     * 押金字典单位编码
     */
    @ApiModelProperty(name = "depositUnitCode", value = "押金字典单位编码", required = true)
    private String depositUnitCode;

    /**
     * 违约金
     */
    @ApiModelProperty(name = "violation", value = "违约金", required = true)
    private BigDecimal violation;

    @ApiModelProperty(name = "property_fee", value = "物业费用", required = true)
    private BigDecimal propertyFee;

    @ApiModelProperty(name = "propertyFeeCode", value = "物业费用code", required = true)
    private String propertyFeeCode;

    /**
     * 违约金单位编码
     */
    @ApiModelProperty(name = "violationUnitCode", value = "违约金单位编码", required = true)
    private String violationUnitCode;


    @ApiModelProperty(name = "customInfoForm", value = "客户信息", required = true)
    private AddCustomInfoParam customInfoParam;

    @ApiModelProperty(name = "purposeRoomNewList", value = "房源", required = true)
    private List<CustomPurposeRoomNewParam> purposeRoomNewList;


    @ApiModelProperty(name = "contractRentClauses", value = "合同租金条款", required = true)
    private ContractRentClauseNewParam contractRentClauses;


    @ApiModelProperty(name = "contractRentIncrementalClauseNewForm", value = "递增条款", required = true)
    private List<ContractRentIncrementalClauseNewParam> incrementalClauseNewParams;

    @ApiModelProperty(name = "contractRentDiscountClauseNewForm", value = "优惠条款", required = true)
    private List<ContractRentDiscountClauseNewParam> discountClauseNewParams;


    @ApiModelProperty(name = "fileNewFormList", value = "文件", required = true)
    private List<ContractFileNewParam> fileNewParamList;
}
